package application;

import controleur.ConnexionBD;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class CommandeDAO
{
    /**
     * Transforme un ResultSet en liste de CommandeBean
     * @param set
     * @return 
     */
    private static List<CommandeBean> getCommandes(final ResultSet set)
    {
        List<CommandeBean> commandesBeanListe = new ArrayList<CommandeBean>();

        try {
            if (set != null) {
                while (set.next()) {
                    Commande c = new Commande();

                    int nombreJoursRetard = set.getInt("difference_dates");

                    if (nombreJoursRetard < 0) {
                        nombreJoursRetard = 0;
                    }

                    c.setDateCommande(set.getString("date_de_commande"));
                    c.setDateRetour(set.getString("date_de_retour"));
                    c.setIdCommande(set.getString("id_commande"));
                    c.setIdEtat(set.getString("id_etat"));
                    c.setIdMembre(set.getString("id_membre"));
                    c.setNombreJoursRetard(nombreJoursRetard);

                    commandesBeanListe.add(c.getCommandeBean());
                }
            }
        } catch (Exception e) {
        }
        return commandesBeanListe;
    }

    /**
     * Retourne la liste des commandes ouvertes d'un membre.
     * @param idMembre
     * @return 
     */
    public static List<CommandeBean> getCommandesOuvertesMembre(final String idMembre)
    {
        final String query = "select *, DATEDIFF(curdate(), date_de_retour) AS difference_dates "
                + "from commande where id_membre=? and id_etat=17 "
                + "order by date_de_retour";
        List<CommandeBean> cbean;

        ConnexionBD con = new ConnexionBD();
        cbean = CommandeDAO.getCommandes(con.execute_query(query, idMembre));
        con.close();

        return cbean;
    }

    /**
     * Retourne la liste des commandes ouvertes.
     * @return 
     */
    public static List<CommandeBean> getCommandesOuvertes()
    {
        final String query = "select *, DATEDIFF(curdate(), date_de_retour) AS difference_dates "
                + "from commande where id_etat=17 "
                + "order by date_de_retour";
        List<CommandeBean> cbean;

        ConnexionBD con = new ConnexionBD();
        cbean = CommandeDAO.getCommandes(con.execute_query(query));
        con.close();

        return cbean;
    }
}
